package com.example.demo;

import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;

@RestController
public class SessionController {
    @RequestMapping("/getC")
    public String getCookie(HttpServletRequest request, HttpServletResponse response){
//        获取参数
//        String name = request.getParameter("name");
        //获取cookie
        Cookie[] cookies = request.getCookies();
        //打印cookie中所有的名称与数据
        if (cookies!=null){
            Arrays.stream(cookies).forEach(ck -> System.out.println(ck.getName()+":"+ck.getValue()));
        }
        return "获取cookie";
    }

    @RequestMapping("/getC2")
    //获取cookie中关于bite的信息（单个）
    public String getCookie2(@CookieValue("wrm") String bite){
        return "从cookie中获取值：wrm:"+bite;
    }

    @RequestMapping("/setSession")
    //获取cookie中关于bite的信息（单个）
    public String setSession(HttpSession session) {
        //从cookie中拿到了sessionID，根据session获取session对象。如果没有就会创建一个session对象。
        //HttpSession session就相当于封装了request.getSession()和request.setSession()，就可以省略这一部分代码
//        HttpSession session = request.getSession();
        //设置创建的name值
        session.setAttribute("name","wrm");
        return "设置name成功";
    }
    @RequestMapping("/getSession")
    //获取cookie中关于bite的信息（单个）
    public String getSession(HttpServletRequest request){
        //从cookie中拿到了sessionID，根据session获取session对象。
        HttpSession session = request.getSession();
        //获取name的值
        String name = (String) session.getAttribute("name");
        return "从session中获取name"+name;
    }

    @RequestMapping("/getSession2")
    //获取cookie中关于bite的信息（单个）
    public String getSession2(@SessionAttribute("name") String name){
        //从cookie中拿到了sessionID，根据session获取session对象。
//        HttpSession session = request.getSession();
        //获取name的值
//        String name = (String) session.getAttribute("name");
        return "从session中获取name"+name;
    }
    @RequestMapping("/getHeader")
    public String getHeader(HttpServletRequest request){
        String header = request.getHeader("User-Agent");
        return "根据header获取相关信息：userAgent="+header;
    }
    @RequestMapping("/getHeader2")
    public String getHeader2(@RequestHeader("User-Agent") String header){
//        String header = request.getHeader("User-Agent");
        return "根据header获取相关信息：userAgent="+header;
    }
}
